/* eslint-env node */

const 即时症状 = [
  '失忆：调查员对自己上一次抵达安全的场所后发生的事一无所知。在其看来上一刻他还在吃着早餐，而下一刻就已经身处怪物面前。这将持续 1d10=[[1d10]] 轮。',
  '假性残疾：调查员陷入因心理作用引起的失明、耳聋或肢体失能中，这一效果将持续 1d10=[[1d10]] 轮。',
  '暴力倾向：调查员沉浸于狂怒，开始对四周的一切施加失控的暴力与破坏行为，无论敌友。这一效果持续 1d10=[[1d10]] 轮。',
  '偏执妄想：调查员陷入严重的偏执妄想之中，持续 1d10=[[1d10]] 轮。所有人都正在与他为敌！没人值得信任！他正在被窥视着，有人背叛了他，他所看见的皆是虚伪的幻象。',
  '人际依赖：浏览调查员背景故事的“重要之人”条目。调查员会将当前场景中的另一人误当做他的重要之人。调查员将依照他与重要之人之间关系的性质行事。这一效果持续 1d10=[[1d10]] 轮。',
  '昏厥：调查员会立即昏倒，并在 1d10=[[1d10]] 轮后苏醒。',
  '惊慌逃窜：调查员会无法自制地用一切可能的方法远远逃开，即使这意味着他需要开走唯一的一辆车并抛下其他所有人。他会持续逃窜 1d10=[[1d10]] 轮。',
  '歇斯底里：调查员情不自禁地开始狂笑、哭泣、尖叫，等等。这会持续 1d10=[[1d10]] 轮。',
  '恐惧症：调查员患上一项新的恐惧症。掷 1d100 或由守秘人选择一项。即使引发这些恐惧症的源头并不在身边，调查员仍会在 1d10=[[1d10]] 轮内想象那些东西正在那里。',
  '躁狂症：调查员患上一项新的躁狂症。掷 1d100 或由守秘人选择一项。调查员会在接下来的 1d10=[[1d10]] 轮中沉浸在他新的躁狂症中。'
]

const 总结症状 = [
  '失忆：调查员恢复神志时身处陌生地点，连自己是谁都不记得。记忆会随时间流逝逐渐恢复。',
  '被劫：调查员 1d10=[[1d10]] 小时后恢复神志时，财物已遭人打劫，但没有受到人身伤害。如果其携带着宝贵之物(参考调查员背景故事)，进行一次幸运检定决定它是否被盗。其他所有值钱的物品都会自动丢失。',
  '遍体鳞伤：调查员 1d10=[[1d10]] 小时后恢复神志时，遍体鳞伤，浑身淤青。生命值降低至疯狂前的一半，但这不会造成重伤。调查员的财物没有被劫走。这些伤害如何造成由守秘人决定。',
  '暴力：调查员的情绪在暴力和破坏的冲动中爆发。调查员恢复神志时可能记得自己做过的事，也可能不记得。调查员对谁、对什么东西施以暴力，是杀死还是仅仅造成伤害，这些都由守秘人决定。',
  '思想与信念：浏览调查员背景故事的“思想与信念”条目。调查员选择其中一项，将它以极端、疯魔、形之于色的方式展现出来。例如，信仰宗教的人后来可能在地铁上大声宣讲福音。',
  '重要之人：浏览调查员背景故事的“重要之人”条目，及其重要的原因。在略过的时间中(1d10=[[1d10]] 小时或更久)，调查员会尽一切努力接近重要之人，并以某种行动展现他们之间的关系。',
  '被收容：调查员恢复神志时身处精神病房或者警局拘留室当中。调查员会逐渐回想起他们身处此地的原因。',
  '惊慌逃窜：调查员恢复神志时已经身处很远的地方，可能在荒野中迷失了方向，或是正坐在火车或长途巴士上。',
  '恐惧症：调查员患上一项新的恐惧症。掷 1d100 或由守秘人选择一项。调查员 1d10=[[1d10]] 小时以后恢复神志，并采取了一切预防措施逃避新患上的恐惧症。',
  '躁狂症：调查员患上一项新的躁狂症。掷 1d100 或由守秘人选择一项。调查员 1d10=[[1d10]] 小时以后恢复神志。在疯狂发作期间，调查员完全沉溺于新的躁狂症状当中。症状对其他人是否明显由守秘人和玩家决定。'
]

const 恐惧症状 = [
  '沐浴恐惧症：害怕洗漱和洗澡。',
  '恐高症：害怕高处。',
  '高空恐惧症：害怕飞行。',
  '广场恐惧症：害怕开放（人多）的公共场所。',
  '恐鸡症：害怕鸡。',
  '恐蒜症：害怕大蒜。',
  '乘车恐惧症：害怕进入车辆或乘车出行。',
  '恐风症：害怕风。',
  '恐男症：害怕男人。',
  '恐英症：害怕英国、英国文化等。',
  '恐花症：害怕花。',
  '截肢恐惧症：害怕截过肢的人。',
  '蜘蛛恐惧症：害怕蜘蛛。',
  '闪电恐惧症：害怕闪电。',
  '遗迹恐惧症：害怕遗迹和遗址。',
  '长笛恐惧症：害怕长笛。',
  '细菌恐惧症：害怕细菌。',
  '飞弹恐惧症：害怕子弹和炮弹。',
  '步行恐惧症：害怕摔倒。',
  '书籍恐惧症：害怕书。',
  '植物恐惧症：害怕植物。',
  '美女恐惧症：害怕美女。',
  '寒冷恐惧症：害怕寒冷。',
  '钟表恐惧症：害怕钟表。',
  '幽闭恐惧症：害怕封闭空间。',
  '小丑恐惧症：害怕小丑。',
  '恐犬症：害怕犬类。',
  '恶魔恐惧症：害怕鬼魂和恶魔。',
  '人群恐惧症：害怕人群。',
  '牙医恐惧症：害怕牙医。',
  '弃物恐惧症：害怕扔掉东西（囤积狂）。',
  '毛皮恐惧症：害怕毛皮。',
  '过街恐惧症：害怕过马路。',
  '教堂恐惧症：害怕教堂。',
  '窥镜恐惧症：害怕镜子。',
  '尖端恐惧症：害怕针尖和钉尖。',
  '昆虫恐惧症：害怕昆虫。',
  '恐猫症：害怕猫类。',
  '过桥恐惧症：害怕过桥。',
  '恐老症：害怕老人、害怕衰老。',
  '恐女症：害怕女人。',
  '恐血症：害怕血液。',
  '犯罪恐惧症：害怕犯下罪过。',
  '触摸恐惧症：害怕触摸。',
  '爬虫恐惧症：害怕爬行动物。',
  '恐雾症：害怕雾气。',
  '枪械恐惧症：害怕枪械。',
  '恐水症：害怕水。',
  '睡眠恐惧症：害怕睡眠或被催眠。',
  '恐医症：害怕医生。',
  '恐鱼症：害怕鱼。',
  '蟑螂恐惧症：害怕蟑螂。',
  '雷电恐惧症：害怕打雷。',
  '蔬菜恐惧症：害怕蔬菜。',
  '噪音恐惧症：害怕噪音。',
  '湖泊恐惧症：害怕湖泊。',
  '机械恐惧症：害怕机器和机械设备。',
  '巨物恐惧症：害怕巨大的东西。',
  '束缚恐惧症：害怕被束缚、捆绑。',
  '陨石恐惧症：害怕流星、陨石。',
  '孤独恐惧症：害怕独处。',
  '不洁恐惧症：害怕尘土和污染。',
  '黏液恐惧症：害怕黏液。',
  '死亡恐惧症：害怕尸体。',
  '八恐惧症：害怕数字八。',
  '牙齿恐惧症：害怕牙齿。',
  '恐梦症：害怕做梦。',
  '称名恐惧症：害怕听到某个字或词。',
  '恐蛇症：害怕蛇类。',
  '恐鸟症：害怕鸟类。',
  '寄生虫恐惧症：害怕寄生虫。',
  '人偶恐惧症：害怕人偶。',
  '吞咽恐惧症：害怕吞咽、进食和被吃。',
  '药物恐惧症：害怕药物。',
  '鬼魂恐惧症：害怕鬼魂。',
  '日光恐惧症：害怕日光。',
  '胡须恐惧症：害怕胡须。',
  '河流恐惧症：害怕河流。',
  '酒精恐惧症：害怕酒和含酒精的饮料。',
  '恐火症：害怕火。',
  '魔术棒恐惧症：害怕魔术。',
  '暗影恐惧症：害怕黑暗或夜晚。',
  '恐月症：害怕月亮。',
  '铁路恐惧症：害怕坐火车旅行。',
  '恐星症：害怕星星。',
  '狭室恐惧症：害怕狭小的事物和地点。',
  '对称恐惧症：害怕对称。',
  '活埋恐惧症：害怕被活埋、害怕墓地。',
  '恐牛症：害怕牛。',
  '电话恐惧症：害怕电话。',
  '畸形恐惧症：害怕怪物。',
  '海洋恐惧症：害怕海洋。',
  '手术恐惧症：害怕外科手术。',
  '十三恐惧症：害怕数字 13。',
  '衣物恐惧症：害怕衣服。',
  '女巫恐惧症：害怕女巫和巫术。',
  '恐黄症：害怕黄颜色和“黄”字。',
  '外语恐惧症：害怕外国语。',
  '排外症：害怕陌生人或外国人。',
  '动物恐惧症：害怕动物。',
]

const 狂躁症状 = [
  '沐浴狂：强迫性地清洁身体。',
  '意志缺失狂：病态的优柔寡断。',
  '黑暗狂：过度喜爱黑暗。',
  '登高狂：强迫性地登高。',
  '亲切狂：病态的友好行为。',
  '旷野狂：强烈渴望进入开放空间。',
  '尖端狂：痴迷于尖锐锋利的物体。',
  '嗜猫狂：反常地热爱猫类。',
  '疼痛狂：痴迷于疼痛。',
  '大蒜狂：痴迷大蒜。',
  '乘车狂：痴迷乘车。',
  '欣喜狂：非理性的愉悦。',
  '花卉狂：痴迷花卉。',
  '计数狂：强迫性的专心计数。',
  '消费狂：冲动或鲁莽地消费。',
  '孤独狂：过度喜爱独处。',
  '芭蕾狂：反常地热爱芭蕾舞。',
  '盗书狂：强迫性地偷书。',
  '藏书狂：痴迷于书籍和读书。',
  '磨牙狂：强迫性的磨牙。',
  '鬼附身妄想狂：病态地相信自己被恶鬼缠身。',
  '美貌妄想狂：痴迷于自己的美貌。',
  '地图狂：不可控制强迫性地到处看地图。',
  '蹦极狂：痴迷于从高处往下跳。',
  '寒冷狂：对寒冷或寒冷物体的异常渴望。',
  '舞蹈狂：无法控制地疯狂热衷跳舞。',
  '卧床狂：过度想要呆在床上。',
  '墓地狂：痴迷于墓地。',
  '色彩狂：痴迷于某种颜色。',
  '小丑狂：痴迷于小丑。',
  '反抗狂：强迫性地体验令人恐惧的情境。',
  '杀戮狂：痴迷于杀戮。',
  '恶魔妄想狂：病态地相信自己被恶魔缠身。',
  '撕皮狂：强迫性地撕自己的皮肤。',
  '正义狂：痴迷伸张正义。',
  '嗜酒狂：反常地渴望饮酒。',
  '毛皮狂：痴迷于收藏毛皮。',
  '送礼狂：痴迷于赠送礼物。',
  '逃脱狂：强迫性地逃脱。',
  '流浪狂：痴迷于流浪。',
  '自大狂：非理性的自我中心态度或者自我崇拜。',
  '升官狂：渴望担任公职，不知满足。',
  '自罪妄想狂：病态地相信自己有罪过。',
  '学识狂：痴迷掌握知识。',
  '寂静狂：强迫性地保持安静。',
  '乙醚成瘾狂：渴望乙醚。',
  '求偶狂：痴迷于提出奇怪的求婚。',
  '狂笑狂：无法控制强迫性地大笑。',
  '巫术狂：痴迷于女巫和巫术。',
  '书写狂：痴迷于写下每一件事。',
  '裸露狂：强迫性地裸体。',
  '欣快狂：反常地倾向于产生愉快的幻觉（而非认清现实）。',
  '蠕虫狂：过度喜爱蠕虫。',
  '枪械狂：痴迷枪械。',
  '嗜水狂：非理性地渴求水分。',
  '嗜鱼狂：痴迷鱼类。',
  '画像狂：痴迷画像和肖像。',
  '偶像狂：痴迷或忠于偶像。',
  '情报狂：过度热爱收集信息。',
  '呐喊狂：非理性强迫性地大叫。',
  '偷窃狂：非理性强迫性地盗窃。',
  '噪音狂：无法控制强迫性地发出巨大尖厉的噪音。',
  '嗜绳狂/琴弦狂：痴迷于线绳/琴弦。',
  '博彩狂：极度渴望参与博彩。',
  '悲伤狂：异常的忧郁倾向。',
  '巨石狂：周围有巨石圈或者矗立的巨石时，就会异常的倾向于产生怪异想法。',
  '音乐狂：痴迷于音乐或者某种曲调。',
  '赋诗狂：无法满足的诗歌创作欲。',
  '憎恶狂：憎恶一切事物，痴迷于憎恶某个问题或者某群人。',
  '单一偏执狂：反常的痴迷于某一想法或念头。',
  '虚言狂：不正常地说谎或夸大其辞。',
  '疑病妄想狂：妄想自己得了想象中的病。',
  '记录狂：强迫性地记录每件事（如摄影）。',
  '嗜名狂：痴迷于名称（人名、地名、事物名）。',
  '称名狂：无法抗拒渴望重复某些字词。',
  '剔甲狂：强迫性地抠指甲。',
  '偏食狂：反常地喜欢一种食物。',
  '牢骚狂：发牢骚时会得到非正常的愉悦。',
  '面具狂：强迫性地佩戴面具。',
  '嗜鬼狂：痴迷于鬼魂。',
  '杀人狂：病态的杀人倾向。',
  '嗜光狂：病态地渴求照明。',
  '漂泊狂：反常地想要违背社会准则。',
  '豪富狂：痴迷渴望财富。',
  '谎语狂：非理性强迫性的撒谎。',
  '纵火狂：强迫性地点火。',
  '提问狂：强迫性的提问冲动。',
  '抠鼻狂：强迫性地抠鼻孔。',
  '涂鸦狂：痴迷于涂鸦、乱写乱画。',
  '铁路狂：对火车和铁路旅行的强烈入迷。',
  '大智妄想狂：妄想自己智慧超凡。',
  '技术狂：痴迷于新技术。',
  '死亡妄想狂：妄信自己被死亡魔法诅咒了。',
  '神格妄想狂：妄信自己是神。',
  '搔痒狂：强迫性地给自己搔痒。',
  '手术狂：非理性地喜爱进行外科手术。',
  '拔毛狂：渴望拔掉自己的毛发。',
  '盲目狂：精神性失明。',
  '亲外狂：痴迷于外国、外界的事物。',
  '动物狂：疯狂地喜爱动物。',
]

module.exports = ({ render, getPreference }) => ({
  id: 'io.paotuan.plugin.insane',
  name: '疯狂症状',
  description: '抽取 COC 疯狂症状',
  version: 3,
  preference: [
    {
      key: 'text.ti',
      label: '抽取临时疯狂症状',
      defaultValue: '{{at用户}}抽取临时疯狂症状：'
    },
    {
      key: 'text.li',
      label: '抽取总结疯狂症状',
      defaultValue: '{{at用户}}抽取总结疯狂症状：'
    },
    {
      key: 'text.phobia.extra',
      label: '抽取恐惧症状-附加语',
      defaultValue: '抽取恐惧症状：'
    },
    {
      key: 'text.mania.extra',
      label: '抽取狂躁症状-附加语',
      defaultValue: '抽取狂躁症状：'
    },
    {
      key: 'text.phobia',
      label: '单独抽取恐惧症状',
      defaultValue: '{{at用户}}抽取恐惧症状：'
    },
    {
      key: 'text.mania',
      label: '单独抽取狂躁症状',
      defaultValue: '{{at用户}}抽取狂躁症状：'
    },
  ],
  customReply: [
    {
      id: 'ti',
      name: '临时疯狂症状',
      description: '/ti 抽取临时疯狂症状',
      command: /^\s*ti/.source, //'^\\s*ti',
      trigger: 'regex',
      items: [
        {
          weight: 1,
          reply(env) {
            const pref = getPreference(env)
            const [str, index] = rand(即时症状)
            let extra = ''
            if (index === 8) {
              extra = render(pref['text.phobia.extra'], env) + rand(恐惧症状)[0]
            } else if (index === 9) {
              extra = render(pref['text.mania.extra'], env) + rand(狂躁症状)[0]
            }
            let resp = `${render(pref['text.ti'], env)}\n${str}`
            if (extra) {
              resp += '\n' + extra
            }
            return resp
          }
        }
      ]
    },
    {
      id: 'li',
      name: '总结疯狂症状',
      description: '/li 抽取总结疯狂症状',
      command: /^\s*li/.source, //'^\\s*li',
      trigger: 'regex',
      items: [
        {
          weight: 1,
          reply(env) {
            const pref = getPreference(env)
            const [str, index] = rand(总结症状)
            let extra = ''
            if (index === 8) {
              extra = render(pref['text.phobia.extra'], env) + rand(恐惧症状)[0]
            } else if (index === 9) {
              extra = render(pref['text.mania.extra'], env) + rand(狂躁症状)[0]
            }
            let resp = `${render(pref['text.li'], env)}\n${str}`
            if (extra) {
              resp += '\n' + extra
            }
            return resp
          }
        }
      ]
    },
    {
      id: 'phobia',
      name: '恐惧症状',
      description: '/恐惧症状 抽取恐惧症状',
      defaultEnabled: false,
      command: /^\s*恐惧症状/.source, //'^\\s*恐惧症状',
      trigger: 'regex',
      items: [
        {
          weight: 1,
          reply(env) {
            const pref = getPreference(env)
            const [str] = rand(恐惧症状)
            return `${render(pref['text.phobia'], env)}\n${str}`
          }
        }
      ]
    },
    {
      id: 'mania',
      name: '狂躁症状',
      description: '/狂躁症状 抽取狂躁症状',
      defaultEnabled: false,
      command: /^\s*狂躁症状/.source, //'^\\s*狂躁症状',
      trigger: 'regex',
      items: [
        {
          weight: 1,
          reply(env) {
            const pref = getPreference(env)
            const [str] = rand(狂躁症状)
            return `${render(pref['text.mania'], env)}\n${str}`
          }
        }
      ]
    }
  ]
})

function rand(array) {
  const index = Math.floor(Math.random() * array.length)
  return [array[index], index]
}
